package com.huashi.dealer.modular.business.role.service;

import com.huashi.dealer.modular.business.role.param.StoreAccessVo;
import com.huashi.dealer.modular.business.role.param.StoreRoleDetailVo;
import com.huashi.dealer.modular.business.role.param.StoreRoleListParam;
import com.huashi.dealer.modular.business.role.param.StoreRoleParam;
import com.huashi.dealer.modular.business.role.param.StoreRoleVo;

import java.util.List;

/**
 * 角色服务接口
 *
 * @author 谭陈强
 * @since 2025-01-27
 */
public interface StoreRoleService {

    /**
     * 获取角色列表
     *
     * @param param 查询参数
     * @return 角色列表
     */
    List<StoreRoleVo> getRoleList(StoreRoleListParam param);

    /**
     * 获取角色详情（用于编辑）
     *
     * @param roleId 角色ID
     * @return 角色详情
     */
    StoreRoleDetailVo getRoleDetail(Long roleId);

    /**
     * 添加角色
     *
     * @param param 角色参数
     * @return 是否成功
     */
    boolean addRole(StoreRoleParam param);

    /**
     * 更新角色
     *
     * @param roleId 角色ID
     * @param param 角色参数
     * @return 是否成功
     */
    boolean updateRole(Long roleId, StoreRoleParam param);

    /**
     * 删除角色
     *
     * @param roleId 角色ID
     * @return 是否成功
     */
    boolean deleteRole(Long roleId);

    /**
     * 获取权限树形数据（JSON格式，用于前端jsTree组件）
     *
     * @param roleId 角色ID（可选，用于获取已分配权限）
     * @return JSON字符串
     */
    String getAccessTreeJson(Long roleId);

    /**
     * 获取权限列表（树形结构，用于页面展示）
     *
     * @return 权限列表
     */
    List<StoreAccessVo> getAccessList();
}
